#pragma once

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int QEDataType;

typedef struct QueueNode
{
	QEDataType data;
	struct QueueNode* next;
}QENode;

typedef struct Queue
{
	QENode* phead;
	QENode* ptail;
	int size;
}QE;

void QEInit(QE* pq);

bool QEEmpty(QE* pq);

void QEPush(QE* pq, QEDataType x);

int QEGet(QE* pq);

void QEPop(QE* pq);

int QESize(QE* pq);

void QEDestroy(QE* pq);